package SDL.Keysym is

  type Key_t is new C.int;
  type ModKey_t is new Uint32_t;
  pragma Convention (C, Key_t);
  pragma Convention (C, ModKey_t);

  K_Unknown    : constant Key_t := 0;
  K_First      : constant Key_t := 0;
  K_Backspace  : constant Key_t := 8;
  K_Tab        : constant Key_t := 9;
  K_Clear      : constant Key_t := 12;
  K_Return     : constant Key_t := 13;
  K_Pause      : constant Key_t := 19;
  K_Escape     : constant Key_t := 27;
  K_Space      : constant Key_t := 32;
  K_Exclaim    : constant Key_t := 33;
  K_QuoteDbl   : constant Key_t := 34;
  K_Hash       : constant Key_t := 35;
  K_Dollar     : constant Key_t := 36;
  K_Ampersand  : constant Key_t := 38;
  K_Quote      : constant Key_t := 39;
  K_LeftParen  : constant Key_t := 40;
  K_RightParen : constant Key_t := 41;
  K_Asterisk   : constant Key_t := 42;
  K_Plus       : constant Key_t := 43;
  K_Comma      : constant Key_t := 44;
  K_Minus      : constant Key_t := 45;
  K_Period     : constant Key_t := 46;
  K_Slash      : constant Key_t := 47;
  K_0          : constant Key_t := 48;
  K_1          : constant Key_t := 49;
  K_2          : constant Key_t := 50;
  K_3          : constant Key_t := 51;
  K_4          : constant Key_t := 52;
  K_5          : constant Key_t := 53;
  K_6          : constant Key_t := 54;
  K_7          : constant Key_t := 55;
  K_8          : constant Key_t := 56;
  K_9          : constant Key_t := 57;
  K_Colon      : constant Key_t := 58;
  K_Semicolon  : constant Key_t := 59;
  K_Less       : constant Key_t := 60;
  K_Equals     : constant Key_t := 61;
  K_Greater    : constant Key_t := 62;
  K_Question   : constant Key_t := 63;
  K_At         : constant Key_t := 64;

  K_LeftBracket  : constant Key_t := 91;
  K_Backslash    : constant Key_t := 92;
  K_RightBracket : constant Key_t := 93;
  K_Caret        : constant Key_t := 94;
  K_Underscore   : constant Key_t := 95;
  K_Backquote    : constant Key_t := 96;
  K_A            : constant Key_t := 97;
  K_B            : constant Key_t := 98;
  K_C            : constant Key_t := 99;
  K_D            : constant Key_t := 100;
  K_E            : constant Key_t := 101;
  K_F            : constant Key_t := 102;
  K_G            : constant Key_t := 103;
  K_H            : constant Key_t := 104;
  K_I            : constant Key_t := 105;
  K_J            : constant Key_t := 106;
  K_K            : constant Key_t := 107;
  K_L            : constant Key_t := 108;
  K_M            : constant Key_t := 109;
  K_N            : constant Key_t := 110;
  K_O            : constant Key_t := 111;
  K_P            : constant Key_t := 112;
  K_Q            : constant Key_t := 113;
  K_R            : constant Key_t := 114;
  K_S            : constant Key_t := 115;
  K_t            : constant Key_t := 116;
  K_U            : constant Key_t := 117;
  K_V            : constant Key_t := 118;
  K_W            : constant Key_t := 119;
  K_X            : constant Key_t := 120;
  K_Y            : constant Key_t := 121;
  K_Z            : constant Key_t := 122;
  K_Delete       : constant Key_t := 127;

  K_World_0  : constant Key_t := 160;
  K_World_1  : constant Key_t := 161;
  K_World_2  : constant Key_t := 162;
  K_World_3  : constant Key_t := 163;
  K_World_4  : constant Key_t := 164;
  K_World_5  : constant Key_t := 165;
  K_World_6  : constant Key_t := 166;
  K_World_7  : constant Key_t := 167;
  K_World_8  : constant Key_t := 168;
  K_World_9  : constant Key_t := 169;
  K_World_10 : constant Key_t := 170;
  K_World_11 : constant Key_t := 171;
  K_World_12 : constant Key_t := 172;
  K_World_13 : constant Key_t := 173;
  K_World_14 : constant Key_t := 174;
  K_World_15 : constant Key_t := 175;
  K_World_16 : constant Key_t := 176;
  K_World_17 : constant Key_t := 177;
  K_World_18 : constant Key_t := 178;
  K_World_19 : constant Key_t := 179;
  K_World_20 : constant Key_t := 180;
  K_World_21 : constant Key_t := 181;
  K_World_22 : constant Key_t := 182;
  K_World_23 : constant Key_t := 183;
  K_World_24 : constant Key_t := 184;
  K_World_25 : constant Key_t := 185;
  K_World_26 : constant Key_t := 186;
  K_World_27 : constant Key_t := 187;
  K_World_28 : constant Key_t := 188;
  K_World_29 : constant Key_t := 189;
  K_World_30 : constant Key_t := 190;
  K_World_31 : constant Key_t := 191;
  K_World_32 : constant Key_t := 192;
  K_World_33 : constant Key_t := 193;
  K_World_34 : constant Key_t := 194;
  K_World_35 : constant Key_t := 195;
  K_World_36 : constant Key_t := 196;
  K_World_37 : constant Key_t := 197;
  K_World_38 : constant Key_t := 198;
  K_World_39 : constant Key_t := 199;
  K_World_40 : constant Key_t := 200;
  K_World_41 : constant Key_t := 201;
  K_World_42 : constant Key_t := 202;
  K_World_43 : constant Key_t := 203;
  K_World_44 : constant Key_t := 204;
  K_World_45 : constant Key_t := 205;
  K_World_46 : constant Key_t := 206;
  K_World_47 : constant Key_t := 207;
  K_World_48 : constant Key_t := 208;
  K_World_49 : constant Key_t := 209;
  K_World_50 : constant Key_t := 210;
  K_World_51 : constant Key_t := 211;
  K_World_52 : constant Key_t := 212;
  K_World_53 : constant Key_t := 213;
  K_World_54 : constant Key_t := 214;
  K_World_55 : constant Key_t := 215;
  K_World_56 : constant Key_t := 216;
  K_World_57 : constant Key_t := 217;
  K_World_58 : constant Key_t := 218;
  K_World_59 : constant Key_t := 219;
  K_World_60 : constant Key_t := 220;
  K_World_61 : constant Key_t := 221;
  K_World_62 : constant Key_t := 222;
  K_World_63 : constant Key_t := 223;
  K_World_64 : constant Key_t := 224;
  K_World_65 : constant Key_t := 225;
  K_World_66 : constant Key_t := 226;
  K_World_67 : constant Key_t := 227;
  K_World_68 : constant Key_t := 228;
  K_World_69 : constant Key_t := 229;
  K_World_70 : constant Key_t := 230;
  K_World_71 : constant Key_t := 231;
  K_World_72 : constant Key_t := 232;
  K_World_73 : constant Key_t := 233;
  K_World_74 : constant Key_t := 234;
  K_World_75 : constant Key_t := 235;
  K_World_76 : constant Key_t := 236;
  K_World_77 : constant Key_t := 237;
  K_World_78 : constant Key_t := 238;
  K_World_79 : constant Key_t := 239;
  K_World_80 : constant Key_t := 240;
  K_World_81 : constant Key_t := 241;
  K_World_82 : constant Key_t := 242;
  K_World_83 : constant Key_t := 243;
  K_World_84 : constant Key_t := 244;
  K_World_85 : constant Key_t := 245;
  K_World_86 : constant Key_t := 246;
  K_World_87 : constant Key_t := 247;
  K_World_88 : constant Key_t := 248;
  K_World_89 : constant Key_t := 249;
  K_World_90 : constant Key_t := 250;
  K_World_91 : constant Key_t := 251;
  K_World_92 : constant Key_t := 252;
  K_World_93 : constant Key_t := 253;
  K_World_94 : constant Key_t := 254;
  K_World_95 : constant Key_t := 255;

  K_KP0         : constant Key_t := 256;
  K_KP1         : constant Key_t := 257;
  K_KP2         : constant Key_t := 258;
  K_KP3         : constant Key_t := 259;
  K_KP4         : constant Key_t := 260;
  K_KP5         : constant Key_t := 261;
  K_KP6         : constant Key_t := 262;
  K_KP7         : constant Key_t := 263;
  K_KP8         : constant Key_t := 264;
  K_KP9         : constant Key_t := 265;
  K_KP_Period   : constant Key_t := 266;
  K_KP_Divide   : constant Key_t := 267;
  K_KP_Multiply : constant Key_t := 268;
  K_KP_Minus    : constant Key_t := 269;
  K_KP_Plus     : constant Key_t := 270;
  K_KP_Enter    : constant Key_t := 271;
  K_KP_Equals   : constant Key_t := 272;

  K_Up       : constant Key_t := 273;
  K_Down     : constant Key_t := 274;
  K_Right    : constant Key_t := 275;
  K_Left     : constant Key_t := 276;
  K_Insert   : constant Key_t := 277;
  K_Home     : constant Key_t := 278;
  K_End      : constant Key_t := 279;
  K_Pageup   : constant Key_t := 280;
  K_Pagedown : constant Key_t := 281;

  K_F1  : constant Key_t := 282;
  K_F2  : constant Key_t := 283;
  K_F3  : constant Key_t := 284;
  K_F4  : constant Key_t := 285;
  K_F5  : constant Key_t := 286;
  K_F6  : constant Key_t := 287;
  K_F7  : constant Key_t := 288;
  K_F8  : constant Key_t := 289;
  K_F9  : constant Key_t := 290;
  K_F10 : constant Key_t := 291;
  K_F11 : constant Key_t := 292;
  K_F12 : constant Key_t := 293;
  K_F13 : constant Key_t := 294;
  K_F14 : constant Key_t := 295;
  K_F15 : constant Key_t := 296;

  K_Numlock   : constant Key_t := 300;
  K_Capslock  : constant Key_t := 301;
  K_Scrollock : constant Key_t := 302;
  K_RShift    : constant Key_t := 303;
  K_LShift    : constant Key_t := 304;
  K_RCtrl     : constant Key_t := 305;
  K_LCtrl     : constant Key_t := 306;
  K_RAlt      : constant Key_t := 307;
  K_LAlt      : constant Key_t := 308;
  K_RMeta     : constant Key_t := 309;
  K_LMeta     : constant Key_t := 310;
  K_Lsuper    : constant Key_t := 311;
  K_Rsuper    : constant Key_t := 312;
  K_Mode      : constant Key_t := 313;
  K_Compose   : constant Key_t := 314;

  K_Help   : constant Key_t := 315;
  K_Print  : constant Key_t := 316;
  K_Sysreq : constant Key_t := 317;
  K_Break  : constant Key_t := 318;
  K_Menu   : constant Key_t := 319;
  K_Power  : constant Key_t := 320;
  K_Euro   : constant Key_t := 321;
  K_Last   : constant Key_t := 322;

  KMod_None     : constant ModKey_t := 16#0000#;
  KMod_LShift   : constant ModKey_t := 16#0001#;
  KMod_RShift   : constant ModKey_t := 16#0002#;
  KMod_LCtrl    : constant ModKey_t := 16#0040#;
  KMod_RCtrl    : constant ModKey_t := 16#0080#;
  KMod_LAlt     : constant ModKey_t := 16#0100#;
  KMod_RAlt     : constant ModKey_t := 16#0200#;
  KMod_LMeta    : constant ModKey_t := 16#0400#;
  KMod_RMeta    : constant ModKey_t := 16#0800#;
  KMod_Num      : constant ModKey_t := 16#1000#;
  KMod_Caps     : constant ModKey_t := 16#2000#;
  KMod_Mode     : constant ModKey_t := 16#4000#;
  KMod_Reserved : constant ModKey_t := 16#8000#;

  KMod_Ctrl  : constant ModKey_t := (KMod_LCtrl or KMod_RCtrl);
  KMod_Shift : constant ModKey_t := (KMod_LShift or KMod_RShift);
  KMod_Alt   : constant ModKey_t := (KMod_LAlt or KMod_RAlt);
  KMod_Meta  : constant ModKey_t := (KMod_LMeta or KMod_RMeta);

end SDL.Keysym;
